//
//  CYMainViewController.swift
//  sina微博
//
//  Created by 媛 on 16/5/19.
//  Copyright © 2016年 yuan. All rights reserved.
//

import UIKit

class CYMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //添加TabController的子控制器
        addChildControllers()
        
        let mainTabBar = CYMainTabBar()
        
        ////赋值。只读属性不能够直接赋值，要通过 KVC 间接赋值
//        self.tabBar = mainTabBar
        //classForCoder 类型的字符串
//        print("tabBar类型", tabBar.classForCoder)
        //setObject: forKey:    ==> 字典
        setValue(mainTabBar, forKey: "tabBar")
//        print("tabBar类型", tabBar.classForCoder)
        
        // target - action 是OC中的机制
        mainTabBar.plusBtn.addTarget(self, action: #selector(CYMainViewController.plusBtnClick), forControlEvents: .TouchUpInside)
        
    
    }
    
    
    //为了让外界不能够访问按钮的监听方法，需要添加 “private” 私有
    //一旦添加private，这时，就不具备动态派发的特性
    //需要添加 “@objc” 告诉系统这个方法 是基于OC消息动态派发的
    @objc private func plusBtnClick() {
        print("我被点了")
    }
    
    
    //MARK: 添加TabController的各个子控制器
    //private 表示"私有的意思"，只是相对于当前文件 是私有的
    private func addChildControllers() {
    
        addChildViewController(CYHomeTableViewController(), imageNamed: "tabbar_home", title: "首页")
        addChildViewController(CYMessageTableViewController(), imageNamed: "tabbar_message_center", title: "消息")
        addChildViewController(CYDiscoverTableViewController(), imageNamed: "tabbar_discover", title: "发现")
        addChildViewController(CYProfileTableViewController(), imageNamed: "tabbar_profile", title: "我的")
        
    
    }

    
    func addChildViewController(vc: UIViewController, imageNamed: String, title: String) {
        
        //设置标签  Xcode的bug：只设置文字可能会不显示，需要同时设置图片
//        vc.tabBarItem.title = title
//        vc.navigationItem.title = title
        //如果标签和导航条的title是一样的话
        vc.title = title
        //设置title的颜色   NSForegroundColorAttributeName: 前景色
        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.orangeColor()], forState: .Selected)
        //统一设置所有的title的颜色
//        tabBar.tintColor = UIColor.orangeColor()
        //调整标签栏按钮的title的位置， Adjustment：调整
        vc.tabBarItem.titlePositionAdjustment = UIOffset(horizontal: 0, vertical: -3)
        
        vc.tabBarItem.image = UIImage(named: imageNamed)
        //设置选中时的图片，需要设置渲染模式   Original：原始的、最初的
        vc.tabBarItem.selectedImage = UIImage(named: imageNamed + "_selected")?.imageWithRenderingMode(.AlwaysOriginal)
        
        //内嵌到导航视图控制器中
        let nav = CYBaseNavController(rootViewController: vc)
        //添加子视图控制器
        addChildViewController(nav)
        
       
        
    }
    
    

}
